/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.com.cotelasa.scp.dao.impl;

import java.io.Serializable;
import java.util.Collection;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;
import pe.com.cotelasa.common.dao.DaoImpl;
import pe.com.cotelasa.common.dao.excepcion.DAOException;
import pe.com.cotelasa.scp.dao.IDAOMotivo;
import pe.com.cotelasa.scp.dominio.common.ESTADO_REGISTRO;
import pe.com.cotelasa.scp.entidad.Motivo;

/**
 *
 * @author WINDOWS 7
 */
@SuppressWarnings("unchecked")
@Repository("daoMotivo")
public class DAOMotivoImpl extends DaoImpl<Motivo, Integer> implements IDAOMotivo, Serializable {

    @Override
    public Motivo buscarMotivoPorDes(String des) throws DAOException {
        try {
            return (Motivo) sessionFactory.getCurrentSession().createCriteria(Motivo.class)
                    .add(Restrictions.like("deMotivo", "%" + des + "%"))
                    .add(Restrictions.eq("estadoRegistro", String.valueOf(ESTADO_REGISTRO.ACTIVO.getValor())))
                    .uniqueResult();


        } catch (Exception e) {
            e.printStackTrace();
            throw new DAOException(e.getMessage(), e);
        }

    }

    @Override
    public Motivo buscarMotivoPorFiltro(String grupo, String motivo) throws DAOException {
        try {
            return (Motivo) sessionFactory.getCurrentSession().createCriteria(Motivo.class)
                    .createAlias("idGrupoMotivo", "grupo")
                    .add(Restrictions.like("deMotivo", "%" + motivo + "%"))
                    .add(Restrictions.like("grupo.deCortaGrupoMotivo", "%" + grupo + "%"))
                    .add(Restrictions.eq("estadoRegistro", String.valueOf(ESTADO_REGISTRO.ACTIVO.getValor())))
                    .uniqueResult();


        } catch (Exception e) {
            e.printStackTrace();
            throw new DAOException(e.getMessage(), e);
        }
    }

    @Override
    public Collection<Motivo> buscarMotivosPorGrupo(String grupo) throws DAOException {
        try {
            return sessionFactory.getCurrentSession().createCriteria(Motivo.class)
                    .createAlias("idGrupoMotivo", "grupo")
                    .add(Restrictions.like("grupo.deCortaGrupoMotivo", "%" + grupo + "%"))
                    .add(Restrictions.eq("estadoRegistro", String.valueOf(ESTADO_REGISTRO.ACTIVO.getValor())))
                    .list();


        } catch (Exception e) {
            e.printStackTrace();
            throw new DAOException(e.getMessage(), e);
        }
    }
}
